package com.cloudkinto.bo.order.makeshop.getOrder;

import com.cloudkinto.annotate.GraphqlResultAttribute;
import lombok.Data;

import java.util.List;

/**
 * @author long
 * @Description 订单信息
 * @Date 2025/4/25 12:42
 */
@Data
public class SearchedOrder {

    /**
     * 系统订单编号
     */
    @Deprecated
    @GraphqlResultAttribute
    private String systemOrderNumber;

    /**
     * 显示订单编号
     */
    @GraphqlResultAttribute
    private String displayOrderNumber;

    /**
     * 会員ID
     * 4~12桁の英数
     * ※非会員からの注文
     * X+6桁数字+氏名
     */
    private String memberId;

    /**
     * 订单日期 eg.2025-04-24 10:14:09
     */
    @GraphqlResultAttribute
    private String orderDate;

    /**
     * 订单修改日期
     * YYYYMMDDhhmmss形式
     * ※新订单时也返回值
     */
    @GraphqlResultAttribute
    private String modified;

    /**
     * 订单总额
     */
    @GraphqlResultAttribute
    private int sumPrice;

    /**
     * 订单总额(订单总额调整前的总额)
     */
    private int sumPriceOrg;

    /**
     * 不含税时的合计税额，含税时为0日元
     */
    @GraphqlResultAttribute
    private int excludedSumTax;

    /**
     * 消费税的计算类型
     * 1：税込・四捨五入（デフォルト）
     * 2：税抜・四捨五入
     * 3：税込・切り捨て
     * 4：税抜・切り捨て
     * 5：税込・切り上げ
     * 6：税抜・切り上げ
     */
    private int taxCalculationType;

    /**
     * 每个税率的价格和税额信息
     */
    private List<OrderPriceInfoPerTaxRate> priceInfoPerTaxRate;

    /**
     * 按会员群体分列的额外积分数
     */
    private int memberGroupPoint;

    /**
     * 现金折扣金额
     */
    @GraphqlResultAttribute
    private int cashDiscountAmount;

    /**
     * 订单使用点
     */
    private int reserve;

    /**
     * 优惠券信息
     */
    @GraphqlResultAttribute
    private CouponInfo couponInfo;

    /**
     * 订单金额的调整额
     */
    private int revisedPrice;

    /**
     * 集中购买折扣额
     */
    private int bulkPurchaseDiscount;

    /**
     * 税率折扣额
     * ※以下折扣为对象。
     * <p>
     * 利用积分
     * 会员团体的折扣额
     * 优惠券信息-优惠券折扣额
     * 订单金额的调整额(※以减法为对象)
     * 集中购买折扣额
     * GMO积分利用
     * ※商店在管理画面上修改订单金额时，可能无法正确显示折扣额。
     */
    private List<DiscountPerTax> discountPerTax;

    /**
     * 结算方法代码
     */
    private String payMethodCode;

    /**
     * 结算方法
     */
    @GraphqlResultAttribute
    private String payMethod;

    /**
     * 结算标题
     * <p>
     * ※可以取得商店将结算方法的名称变更为独自的标题后的值。
     */
    private String paymentTitle;

    /**
     * 结算ID
     */
    @Deprecated
    private String paymentNumber;

    /**
     * 结算状态代码
     * 0000：未入金
     * 0001：入金完了
     * 0002：決済完了
     * 0003：キャンセル
     * 0004：仮売上
     * 0005：処理中
     * 0006：請求確定
     * 0007：審査待ち
     * 0008：審査待ち（準備中）
     * 0009：審査保留
     * 0010：審査中
     * 0011：審査OK
     * 0012：出荷報告（準備中）
     * 0013：出荷報告中
     * 0014：出荷報告完了
     * 0015：注文完了
     * 0016：課金済み
     * 0017：確定待ち
     * 0018：確定
     * 0019：審査依頼
     * 0020：請求依頼
     * 0021：請求依頼中
     * 0022：請求依頼完了
     * 0023：注文キャンセル依頼
     * 0024：注文キャンセル中
     * 0025：支払完了
     * 0026：入金待ち
     * 0027：申し込み中
     * 0028：審査OK（商品発送可）
     * 0029：売上登録依頼済み
     * 0030：未処理
     * 1000：決済待ち
     * 1001：売上報告済
     * 1002：決済不要
     * 9000：カード未課金
     * 9001：売上失敗
     * 9002：要確認
     * 9003：仮売上期限切れ
     * 9004：返金失敗
     * 9005：決済失敗
     * 9006：審査NG
     * 9007：未課金
     * 9008：未確定
     * 9009：連携失敗
     * 9010：ネットバンク未課金
     * 9011：入金期限切れ
     * 9012：配送要調査
     * 9013：PayPal未課金
     * 9014：Yahooウォレット未課金
     */
    private String paymentStatusCode;

    /**
     * 结算状态
     * 使用paymentStatusCode
     */
    @Deprecated
    private String paymentStatus;

    /**
     * 结算手续费的种类
     * 0：手数料なし
     * 1：代引手数料
     * 2：コンビニ手数料
     * 3：NP後払い手数料
     * 4：後払い.com手数料
     */
    private int paymentFeeType;

    /**
     * 结算手续费
     */
    @GraphqlResultAttribute
    private int paymentFee;

    /**
     * 货到付款的结算方法
     */
    private String cashOnDeliveryPayMethod;

    /**
     * 结算相关辅助信息
     */
    private String paymentData;

    /**
     * 付款日期
     */
    @GraphqlResultAttribute
    private String paymentDate;

    /**
     * 刷卡支付方法
     */
    @Deprecated
    private int cardMultiple;

    /**
     * 订购者法人名称
     */
    private String senderCompany;

    /**
     * 订购者法人假名
     */
    private String senderCompanyKana;

    /**
     * 订购者法人部门名称
     */
    private String senderCompanyDept;

    /**
     * 订购者姓名
     */
    @GraphqlResultAttribute
    private String senderName;

    /**
     * 订购者姓名假名
     */
    @GraphqlResultAttribute
    private String senderNameKana;

    /**
     * 订购者邮政编码
     */
    @GraphqlResultAttribute
    private String senderPost;

    /**
     * 订购者地址(都道府县)
     */
    @GraphqlResultAttribute
    private String senderPrefecture;

    /**
     * 订购者地址(市区地址等)
     */
    @GraphqlResultAttribute
    private String senderAddress;

    /**
     * 订购者地址(后续)
     */
    @GraphqlResultAttribute
    private String senderAddress2;

    /**
     * 订购者电话
     */
    @GraphqlResultAttribute
    private String senderTel;

    /**
     * 订购者紧急联系电话
     */
    @Deprecated
    private String senderEmergencyTel;

    /**
     * 订购者E-mail
     */
    @GraphqlResultAttribute
    private String senderEmail;

    /**
     * 订单不可见标志
     * N：デフォルト値
     * Y：不可視
     * R：在庫復旧済み
     * <p>
     * ※Rの条件
     * ・キャンセル時に在庫戻しを指定した場合
     * ・クレジットカード（PG）、Paid決済、Webby（JACCSのショッピングクレジット決済)で実売り上げ処理に失敗した場合
     * ・Paid決済のキャンセルに失敗した場合
     */
    @Deprecated
    private String delFlag;

    /**
     * 订购者的IP地址
     */
    private String ipAddress;

    /**
     * Web浏览器的用户代理
     */
    private String userAgent;

    /**
     * 用户设备类型
     * 1：PC
     * 2：モバイル
     * 3：スマートフォン
     * 4：注文一括登録
     */
    private String userDeviceType;

    /**
     * 链接ID
     */
    @Deprecated
    private String linkId;

    /**
     * 订单临时
     */
    @Deprecated
    private String ordertemp;

    /**
     * 订单备注
     */
    private String message;

    /**
     * 定期购买ID
     */
    private String orderSubscriptionBaseId;

    /**
     * 配送信息
     */
    @GraphqlResultAttribute
    private List<DeliveryInfo> deliveryInfos;
}